A stereoscopic camera arrangement is an element made of two camera units, assembled in a stereoscopic module. Stereoscopy (also referred to as “stereoscopics” or “3D imaging”) is a technique for creating or enhancing the illusion of depth in an image by means of stereopsis. In other words, it is the impression of depth that is perceived when a scene is viewed with both eyes by someone with normal binocular vision which is responsible for creating two slightly different images of the scene in the two eyes due to the eyes'/camera's different locations.
Combining 3D information derived from stereoscopic images, and particularly for video streams, requires search and comparison of a large number of pixels to be held for each pair of images where each derived from a different image capturing device.
Stereo matching algorithms are used to solve the compatibility in stereo images by using feature-, phase-, or area-based matching to calculate disparities in the images. Feature-based matching searches are used for searching characteristics in the images, like edges or curves, which in turn are used for calculating the best matches according to the similarities found. Phase-based algorithms band pass filter the images and extract their phase. Area-based algorithms operate on blocks of pixels from both images and calculate their level of matching. This can be done in parallel for all analyzed pixels. When using a constant block size over the whole image, called box filtering, these algorithms are especially amenable to parallel and hardware-based solutions.
Color information can be used to improve the matching performance significantly. However, the required hardware resources for processing color images on embedded real-time systems are still very high.
When determining depth from stereoscopic sources, using different resolutions leads to achieving different results. By analyzing an image, while using a plurality of resolutions and merging the results of these different resolutions, the outcome thus obtained is notably better than a result obtained while using a single resolution. However, when such a solution is implemented by using an FPGA/ASIC, the local storage and access to external memory need to be optimized. In this setup, several resolutions may be analyzed line by line in parallel pipelines with different parameters, and the analysis results are merged using several merging setups.
Currently, the typical solution applied in the art to obtain an image derived from merging the results obtained while using different resolutions, is, to retrieve the analysis results for each of the different resolutions used, in a separate system run, and then to merge the results thus obtained in yet an additional system run. Consequently, the prior art solution requires either using large internal buffers or requires multiple full-frame accesses to an external memory.